home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
A-COMAL Series
/
(k)aao.d64
/
grammar.lst
< prev
next >
Wrap
File List
|
2009-01-24
|
5KB
|
236 lines
0010 // DELETE "GRAMMER"
0020 // SAVE "GRAMMER"
0030 // BY ─ICK ╦LINGENS
0040 // ─UTCH ├╧═┴╠ ╒SERS ╟ROUP
0050 //
0060 // ╘HIS PROGRAM WAS USED IN SOME
0070 // LECTURES ON
0080 //
0090 // ├OMPUTATIONAL ╠INGUISTICS
0100 //
0110 // GIVEN BY THE AUTHOR
0120 // (SPRING 1985)
0130 //
0140 INFO
0150 TRAP ESC-
0160 REPEAT
0170 SENTENCE // PRODUCTION
0180 PRINT
0190 WAIT'KEY
0200 UNTIL ESC
0210 PRINT "┼ND OF ╨├╞╟"
0220 END
0230 //
0240 // *******************************
0250 // * SYNTAX DEFINITION *
0260 // *******************************
0270 //
0280 PROC SENTENCE
0290 // <SENTENCE>::=
0300 // <SUBJECT><PREDICATE><TERMI-
0310 // NAL SYMBOL>
0320 SUBJECT
0330 PREDICATE
0340 TERM'SYMBOL
0350 ENDPROC SENTENCE
0360 //
0370 PROC SUBJECT
0380 // <SUBJECT>::=
0390 // [0.7]<SUBST GROUP>▌<PERSO-
0400 // NAL PRONOUN 1>
0410 IF P(.7) THEN
0420 SUBSTANTIVE'GROUP
0430 ELSE
0440 PERSONAL'PRONOUN'1
0450 ENDIF
0460 ENDPROC SUBJECT
0470 //
0480 PROC SUBSTANTIVE'GROUP
0490 // <SUBST GROUP>::=
0500 // <ARTICLE><NOUN PHRASE>
0510 ARTICLE
0520 NOUN'PHRASE
0530 ENDPROC SUBSTANTIVE'GROUP
0540 //
0550 PROC ARTICLE
0560 // <ARTICLE>::=
0570 // [0.45] A ▌ THE
0580 IF P(.45) THEN
0590 SYMBOL("A")
0600 ELSE
0610 SYMBOL("THE")
0620 ENDIF
0630 ENDPROC ARTICLE
0640 //
0650 PROC NOUN'PHRASE
0660 // <NOUN PHRASE>::=
0670 // [0.25]<ADJECTIVE><NOUN
0680 // PHRASE>▌<NOUNPART>
0690 IF P(.25) THEN
0700 ADJECTIVE
0710 NOUN'PHRASE
0720 ELSE
0730 NOUNPART
0740 ENDIF
0750 ENDPROC NOUN'PHRASE
0760 //
0770 PROC ADJECTIVE
0780 // <ADJECTIVE>::=
0790 // [0.3] LITTLE ▌[0.6] MEEK ▌
0800 // [0.9] BIG ▌ BAD
0810 IF P(.3) THEN
0820 SYMBOL("LITTLE")
0830 ELIF P(.6) THEN
0840 SYMBOL("MEEK")
0850 ELIF P(.9) THEN
0860 SYMBOL("BIG")
0870 ELSE
0880 SYMBOL("BAD")
0890 ENDIF
0900 ENDPROC ADJECTIVE
0910 //
0920 PROC NOUNPART
0930 IF P(.25) THEN
0940 NOUN
0950 REL'CLAUSE
0960 ELSE
0970 NOUN
0980 ENDIF
0990 ENDPROC NOUNPART
1000 //
1010 PROC NOUN
1020 IF P(.2) THEN
1030 SYMBOL("BOY")
1040 ELIF P(.4) THEN
1050 SYMBOL("GIRL")
1060 ELIF P(.6) THEN
1070 SYMBOL("LAMB")
1080 ELIF P(.8) THEN
1090 SYMBOL("BEAR")
1100 ELSE
1110 SYMBOL("TREE")
1120 ENDIF
1130 ENDPROC NOUN
1140 //
1150 PROC REL'CLAUSE
1160 SYMBOL("THAT")
1170 PREDICATE
1180 ENDPROC REL'CLAUSE
1190 //
1200 PROC PREDICATE
1210 ADVERTIAL'OPTION
1220 VERB
1230 OBJECT
1240 ENDPROC PREDICATE
1250 //
1260 PROC ADVERTIAL'OPTION
1270 // <ADVERTIAL OPTION>::=
1280 // [0.2]<MODIFIER>▌<NOTHING>
1290 IF P(.2) THEN
1300 MODIFIER
1310 ELSE
1320 NULL
1330 ENDIF
1340 ENDPROC ADVERTIAL'OPTION
1350 //
1360 PROC MODIFIER
1370 IF P(.33) THEN
1380 SYMBOL("ALWAYS")
1390 ELIF P(.67) THEN
1400 SYMBOL("OFTEN")
1410 ELSE
1420 SYMBOL("NEVER")
1430 ENDIF
1440 ENDPROC MODIFIER
1450 //
1460 PROC VERB
1470 IF P(.25) THEN
1480 SYMBOL("SEES")
1490 ELIF P(.5) THEN
1500 SYMBOL("LIKES")
1510 ELIF P(.75) THEN
1520 SYMBOL("EATS")
1530 ELSE
1540 SYMBOL("DREAMS ABOUT")
1550 ENDIF
1560 ENDPROC VERB
1570 //
1580 PROC OBJECT
1590 IF P(.8) THEN
1600 SUBSTANTIVE'GROUP
1610 ELSE
1620 PERSONAL'PRONOUN'4
1630 ENDIF
1640 ENDPROC OBJECT
1650 //
1660 PROC PERSONAL'PRONOUN'1
1670 IF P(.25) THEN
1680 SYMBOL("HE")
1690 ELIF P(.5) THEN
1700 SYMBOL("SHE")
1710 ELIF P(.75) THEN
1720 SYMBOL("═ARY")
1730 ELSE
1740 SYMBOL("╩IM")
1750 ENDIF
1760 ENDPROC PERSONAL'PRONOUN'1
1770 //
1780 PROC PERSONAL'PRONOUN'4
1790 IF P(.25) THEN
1800 SYMBOL("HIM")
1810 ELIF P(.5) THEN
1820 SYMBOL("HER")
1830 ELIF P(.75) THEN
1840 SYMBOL("═ARY")
1850 ELSE
1860 SYMBOL("╩IM")
1870 ENDIF
1880 ENDPROC PERSONAL'PRONOUN'4
1890 //
1900 PROC SYMBOL(X$)
1910 PRINT X$+" ",
1920 ENDPROC SYMBOL
1930 //
1940 PROC TERM'SYMBOL
1950 PRINT
1960 ENDPROC TERM'SYMBOL
1970 //
1980 // *******************************
1990 // * ADDITIONAL PROCS/FUNCS *
2000 // *******************************
2010 //
2020 FUNC P(X) CLOSED
2030 RETURN RND(1,100)<X*100
2040 ENDFUNC P
2050 //
2060 PROC INFO
2070 CLEARSCREEN
2080 PRINT
2090 PRINT " ╨├╞╟"
2100 PRINT
2110 PRINT " ╘HIS IS AN EXAMPLE OF A"
2120 PRINT
2130 PRINT " ╨ROBABLISTIC"
2140 PRINT " ├ONTEXT"
2150 PRINT " ╞REE"
2160 PRINT " ╟RAMMAR"
2170 PRINT
2180 PRINT " INSPIRED BY"
2190 PRINT
2200 PRINT " '═ARY HAD A LITTLE LAMB'"
2210 PRINT
2220 PRINT " ╨RESS ANY KEY TO SEE A SENTENCE"
2230 PRINT " ╨RESS [STOP] TO STOP THE PRODUCTION"
2240 WAIT'KEY
2250 PRINT
2260 ENDPROC INFO
2270 //
2280 PROC WAIT'KEY CLOSED
2290 WHILE KEY$>CHR$(0) DO NULL
2300 WHILE KEY$<=CHR$(0) DO NULL
2310 ENDPROC WAIT'KEY
2320 //
2330 PROC CLEARSCREEN
2340 FOR X:=1 TO 25 DO PRINT
2350 ENDPROC CLEARSCREEN